Hierarchical Clustering একটি জনপ্রিয় unsupervised machine learning অ্যালগরিদম যা ডেটার মধ্যে প্যাটার্ন বা গোষ্ঠী (clusters) খুঁজে বের করার জন্য ব্যবহৃত হয়। এটি একটি unsupervised learning technique, অর্থাৎ এতে কোন লেবেলড ডেটা প্রয়োজন হয় না। Hierarchical Clustering মূলত agglomerative এবং divisive দুটি প্রকারে বিভক্ত হয়।
Hierarchical Clustering গোষ্ঠীগুলিকে তৈরি করার জন্য ডেটা পয়েন্টগুলির মধ্যে similarity বা dissimilarity পরিমাপ করে এবং ক্রমান্বয়ে গোষ্ঠী তৈরি করে বা বিভক্ত করে। এটি ডেটা পয়েন্টগুলির মধ্যে সম্পর্কের ভিত্তিতে ডেটাকে হায়ারার্কিক্যাল ট্রিতে (dendrogram) সাজিয়ে রাখে।
Hierarchical Clustering এর ধাপ:
Distance Metric (দূরত্ব পরিমাপ):
Euclidean Distance: সবচেয়ে সাধারণ দূরত্ব পরিমাপ। এটি পয়েন্টগুলির মধ্যে সরলরেখার দূরত্ব পরিমাপ করে।
Manhattan Distance: পয়েন্টগুলির মধ্যে একটি রেকট্যাঙ্গুলার পাথের (axis-aligned path) দূরত্ব পরিমাপ করে।
Cosine Similarity: বিশেষ করে টেক্সট ডেটা বা ভেক্টরের মধ্যে সামঞ্জস্য যাচাই করতে ব্যবহৃত হয়।
Agglomerative (Bottom-Up) Approach:
এই পদ্ধতিতে, আমরা শুরুতে প্রতিটি ডেটা পয়েন্টকে এক একটি গোষ্ঠী হিসাবে বিবেচনা করি।
তারপরে, আমরা সবচেয়ে কাছাকাছি দুটি গোষ্ঠী নির্বাচন করে সেগুলিকে একত্রিত করি এবং এই প্রক্রিয়া পুনরাবৃত্তি করি যতক্ষণ না সমস্ত ডেটা একটি গোষ্ঠীতে সংযুক্ত না হয়ে যায়।
Divisive (Top-Down) Approach:
এই পদ্ধতিতে, আমরা একটি বড় গোষ্ঠী দিয়ে শুরু করি এবং তাকে পুনঃবিভাজন (split) করতে থাকি যতক্ষণ না একে ছোট ছোট গোষ্ঠীতে ভাগ করা না হয়।
এটি তুলনামূলকভাবে কম ব্যবহৃত এবং Computationally খরচসাপেক্ষ হতে পারে।
Steps of Agglomerative Hierarchical Clustering:
Start with Individual Data Points: প্রতিটি ডেটা পয়েন্টকে একটি পৃথক গোষ্ঠী হিসেবে শুরু করা হয়।
Calculate Distance Between Groups: প্রতিটি ডেটা পয়েন্ট বা গোষ্ঠীর মধ্যে দূরত্ব পরিমাপ করা হয়।
Merge Closest Groups: সবচেয়ে কাছাকাছি গোষ্ঠী বা ডেটা পয়েন্টগুলিকে একত্রিত করা হয়। এই ধাপটি পুনরাবৃত্তি করা হয় যতক্ষণ না একটি গোষ্ঠী তৈরি না হয়।
Create Dendrogram: গোষ্ঠী গঠনের পর, dendrogram তৈরি করা হয়, যা গোষ্ঠী গঠনের প্রক্রিয়া এবং তাদের সম্পর্ক প্রদর্শন করে।
Types of Linkage in Hierarchical Clustering:
এখানে "linkage" বলতে দুটি গোষ্ঠী বা ডেটা পয়েন্টের মধ্যে দূরত্ব পরিমাপের পদ্ধতি বোঝানো হচ্ছে। সাধারণত তিনটি ধরনের linkage ব্যবহৃত হয়:
Single Linkage (Nearest Point Linkage):
এতে দুটি গোষ্ঠীর মধ্যে দূরত্ব পরিমাপ করা হয় তাদের সবচেয়ে কাছাকাছি দুটি পয়েন্টের মধ্যে (shortest distance between two clusters)।
Complete Linkage (Farthest Point Linkage):
এতে দুটি গোষ্ঠীর মধ্যে দূরত্ব পরিমাপ করা হয় তাদের সবচেয়ে দূরের দুটি পয়েন্টের মধ্যে (farthest distance between two clusters)।
Average Linkage:
এতে দুটি গোষ্ঠীর মধ্যে দূরত্ব পরিমাপ করা হয় তাদের মধ্যে সমস্ত পয়েন্টের দূরত্বের গড় হিসাবে।
Dendrogram:
Dendrogram একটি গাছের মতো কাঠামো যা হায়ারার্কিকাল ক্লাস্টারিংয়ের ফলাফল প্রদর্শন করে। এটি দেখায় কিভাবে ডেটা পয়েন্টগুলি একে অপরের সাথে সম্পর্কিত এবং কিভাবে তারা একে অপরের সাথে যুক্ত হয়েছে বা পৃথক হয়েছে।
Horizontal axis: ডেটা পয়েন্টগুলির মধ্যে দূরত্ব।
Vertical axis: ক্লাস্টারিং পর্যায়, অর্থাৎ কিভাবে বিভিন্ন গোষ্ঠী একত্রিত হচ্ছে।
Dendrogram-এর মাধ্যমে আপনি গোষ্ঠীর মধ্যে সম্পর্ক দেখতে এবং কিভাবে গোষ্ঠী গঠিত হয়েছে তা বুঝতে পারবেন। গাছের শাখার উচ্চতা নির্দেশ করে যে দুটি গোষ্ঠী একত্রিত হতে কতটা দূরে ছিল।
Example: Agglomerative Hierarchical Clustering in Python
import numpy as np
import matplotlib.pyplot as plt
from scipy.cluster.hierarchy import dendrogram, linkage
# ডেটাসেট তৈরি করা
data = np.array([[1, 2], [3, 4], [4, 5], [7, 8], [8, 9]])
# linkage ফাংশন দ্বারা হায়ারার্কিকাল ক্লাস্টারিং করা
Z = linkage(data, method='single')
# dendrogram প্লট করা
plt.figure(figsize=(10, 7))
dendrogram(Z)
plt.show()
এখানে, আমরা linkage ফাংশন ব্যবহার করে ডেটাসেটের ক্লাস্টার তৈরি করেছি এবং dendrogram প্লট ব্যবহার করে সেটি প্রদর্শন করেছি।
Advantages of Hierarchical Clustering:
No Need to Pre-Define the Number of Clusters: Hierarchical Clustering-এর জন্য আপনাকে আগেই ক্লাস্টারের সংখ্যা নির্ধারণ করতে হয় না, যেহেতু এটি ডেটা সম্পর্কিত একটি ট্রি (dendrogram) তৈরি করে।
Flexibility in Clustering: এটি আপনি যে কোনো স্তরে ক্লাস্টার করতে পারবেন (যেমন, dendrogram থেকে নির্দিষ্ট উচ্চতায় কাটিং করতে পারেন)।
Visual Interpretation: Dendrogram ব্যবহার করে আপনি সহজে ডেটার গঠন এবং সম্পর্ক বিশ্লেষণ করতে পারেন।
Disadvantages of Hierarchical Clustering:
Computationally Expensive: Hierarchical Clustering বড় ডেটাসেটে অনেক বেশি সময় এবং কম্পিউটিং শক্তি ব্যবহার করতে পারে।
Sensitive to Noise and Outliers: এটি আউটলায়ার এবং নোইজের প্রতি সংবেদনশীল হতে পারে।
Does Not Work Well for Large Datasets: খুব বড় ডেটাসেটের জন্য এটি খুব কার্যকরী নয়।
Conclusion
Hierarchical Clustering হল একটি শক্তিশালী ক্লাস্টারিং অ্যালগরিদম যা ডেটার মধ্যে গোষ্ঠী বা ক্লাস্টার সনাক্ত করতে সহায়ক। এটি agglomerative বা divisive পদ্ধতিতে কাজ করতে পারে, যেখানে agglomerative পদ্ধতি বেশি ব্যবহৃত হয়। হায়ারার্কিকাল ক্লাস্টারিংয়ের মাধ্যমে আপনি ডেটার গঠন ও সম্পর্ক বিশ্লেষণ করতে পারবেন এবং এটি dendrogram-এর মাধ্যমে দৃশ্যমান হয়। তবে এটি বড় ডেটাসেটের জন্য কম্পিউটেশনালভাবে খরচসাপেক্ষ হতে পারে।